TgINLINE V(TgVEC) V(F_SETU)( const TYPE * __restrict const pty )
{
V(TgVEC) tvResult;
memcpy( &tvResult, pty, DIM*sizeof(TYPE) );
return (tvResult);
}
TgINLINE V(TgVEC) V(F_SETA)( const TYPE * __restrict const pty )
{
V(TgVEC) tvResult;
memcpy( &tvResult, pty, DIM*sizeof(TYPE) );
return (tvResult);
}
TgINLINE V(TgVEC) V(F_SET1)( const TYPE tyX )
{
#define EQN(A) tyX
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_PERM)( V(CPC_TgVEC) ptv0, V(CPC_TgVEC) ptv1, CPC_TgVECTOR_ALIAS_UNION ptgAU )
{
typedef union
{
struct
{
V(CP_TgVEC) ptv0;
V(CP_TgVEC) ptv1;
V(P_TgVEC) ptv2;
} v;
struct
{
CP_TgUINT08 pui0;
CP_TgUINT08 pui1;
P_TgUINT08 pui2;
} i;
} TgUVAL;
TgUINT32 uiIndex;
V(TgVEC) tv2;
TgUVAL uVal;
uVal.v.ptv0 = ptv0;
uVal.v.ptv1 = ptv1;
uVal.v.ptv2 = &tv2;
for (uiIndex = 0; uiIndex < 16; ++uiIndex)
{
C_TgUINT08 byMask = ptgAU->m_u08_v16.m_aData[uiIndex];
uVal.i.pui2[uiIndex] = (0 == (byMask & 0x10)) ? uVal.i.pui0[byMask & 0xF] : uVal.i.pui1[byMask & 0xF];
};
return (tv2);
}
TgINLINE V(TgVEC) V(F_SEL)( V(CPC_TgVEC) ptv0, V(CPC_TgVEC) ptv1, CPC_TgVECTOR_ALIAS_UNION ptgAU )
{
typedef union
{
struct
{
V(CP_TgVEC) ptv0;
V(CP_TgVEC) ptv1;
V(P_TgVEC) ptv2;
} v;
struct
{
CP_TgUINT32 pui0;
CP_TgUINT32 pui1;
P_TgUINT32 pui2;
} i;
} TgUVAL;
TgUINT32 uiIndex;
V(TgVEC) tv2;
TgUVAL uVal;
uVal.v.ptv0 = ptv0;
uVal.v.ptv1 = ptv1;
uVal.v.ptv2 = &tv2;
for (uiIndex = 0; uiIndex < ((DIM*sizeof(TYPE)) >> 2); ++uiIndex)
{
uVal.i.pui2[uiIndex] = (uVal.i.pui0[uiIndex] ^ ptgAU->m_u32_v04.m_aData[uiIndex]) |
(uVal.i.pui1[uiIndex] & ptgAU->m_u32_v04.m_aData[uiIndex]);
};
return (tv2);
}
TgINLINE V(TgVEC) V(F_AND)( V(CPC_TgVEC) ptv0, V(CPC_TgVEC) ptv1 )
{
typedef union
{
struct
{
V(CP_TgVEC) ptv0;
V(CP_TgVEC) ptv1;
V(P_TgVEC) ptv2;
} v;
struct
{
CP_TgUINT32 pui0;
CP_TgUINT32 pui1;
P_TgUINT32 pui2;
} i;
} TgUVAL;
TgUINT32 uiIndex;
V(TgVEC) tv2;
TgUVAL uVal;
uVal.v.ptv0 = ptv0;
uVal.v.ptv1 = ptv1;
uVal.v.ptv2 = &tv2;
for (uiIndex = 0; uiIndex < ((DIM*sizeof(TYPE)) >> 2); ++uiIndex)
{
uVal.i.pui2[uiIndex] = uVal.i.pui0[uiIndex] & uVal.i.pui1[uiIndex];
};
return (tv2);
}
TgINLINE V(TgVEC) V(F_OR)( V(CPC_TgVEC) ptv0, V(CPC_TgVEC) ptv1 )
{
typedef union
{
struct
{
V(CP_TgVEC) ptv0;
V(CP_TgVEC) ptv1;
V(P_TgVEC) ptv2;
} v;
struct
{
CP_TgUINT32 pui0;
CP_TgUINT32 pui1;
P_TgUINT32 pui2;
} i;
} TgUVAL;
TgUINT32 uiIndex;
V(TgVEC) tv2;
TgUVAL uVal;
uVal.v.ptv0 = ptv0;
uVal.v.ptv1 = ptv1;
uVal.v.ptv2 = &tv2;
for (uiIndex = 0; uiIndex < ((DIM*sizeof(TYPE)) >> 2); ++uiIndex)
{
uVal.i.pui2[uiIndex] = uVal.i.pui0[uiIndex] | uVal.i.pui1[uiIndex];
};
return (tv2);
}
TgINLINE V(TgVEC) V(F_XOR)( V(CPC_TgVEC) ptv0, V(CPC_TgVEC) ptv1 )
{
typedef union
{
struct
{
V(CP_TgVEC) ptv0;
V(CP_TgVEC) ptv1;
V(P_TgVEC) ptv2;
} v;
struct
{
CP_TgUINT32 pui0;
CP_TgUINT32 pui1;
P_TgUINT32 pui2;
} i;
} TgUVAL;
TgUINT32 uiIndex;
V(TgVEC) tv2;
TgUVAL uVal;
uVal.v.ptv0 = ptv0;
uVal.v.ptv1 = ptv1;
uVal.v.ptv2 = &tv2;
for (uiIndex = 0; uiIndex < ((DIM*sizeof(TYPE)) >> 2); ++uiIndex)
{
uVal.i.pui2[uiIndex] = uVal.i.pui0[uiIndex] ^ uVal.i.pui1[uiIndex];
};
return (tv2);
}
TgINLINE V(TgVEC) V(F_MAX)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) T(tgCM_MAX)( ptv0->m_aData[A], ptv1->m_aData[A] )
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_MIN)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) T(tgCM_MIN)( ptv0->m_aData[A], ptv1->m_aData[A] )
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_CMP_EQ_M)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) (ptv0->m_aData[A] == ptv1->m_aData[A]) ? TYPE_MASK : 0
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_CMP_NE_M)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) (ptv0->m_aData[A] != ptv1->m_aData[A]) ? TYPE_MASK : 0
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_CMP_GE_M)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) (ptv0->m_aData[A] >= ptv1->m_aData[A]) ? TYPE_MASK : 0
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_CMP_GT_M)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) (ptv0->m_aData[A] > ptv1->m_aData[A]) ? TYPE_MASK : 0
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_CMP_LE_M)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) (ptv0->m_aData[A] <= ptv1->m_aData[A]) ? TYPE_MASK : 0
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE V(TgVEC) V(F_CMP_LT_M)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
#define EQN(A) ptv0->m_aData[A] < ptv1->m_aData[A] ? TYPE_MASK : 0
VEC_ASSIGN_EQN
#undef EQN
}
TgINLINE TgBOOL V(F_CMP_EQ)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
TgUINT32 uiIndex;
for (uiIndex = 0; uiIndex < DIM; ++uiIndex)
{
if (!(ptv0->m_aData[uiIndex] == ptv1->m_aData[uiIndex]))
{
return (TgFALSE);
};
};
return (TgTRUE);
}
TgINLINE TgBOOL V(F_CMP_NE)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
TgUINT32 uiIndex;
for (uiIndex = 0; uiIndex < DIM; ++uiIndex)
{
if (!(ptv0->m_aData[uiIndex] != ptv1->m_aData[uiIndex]))
{
return (TgFALSE);
};
};
return (TgTRUE);
}
TgINLINE TgBOOL V(F_CMP_GE)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
TgUINT32 uiIndex;
for (uiIndex = 0; uiIndex < DIM; ++uiIndex)
{
if (!(ptv0->m_aData[uiIndex] >= ptv1->m_aData[uiIndex]))
{
return (TgFALSE);
};
};
return (TgTRUE);
}
TgINLINE TgBOOL V(F_CMP_GT)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
TgUINT32 uiIndex;
for (uiIndex = 0; uiIndex < DIM; ++uiIndex)
{
if (!(ptv0->m_aData[uiIndex] > ptv1->m_aData[uiIndex]))
{
return (TgFALSE);
};
};
return (TgTRUE);
}
TgINLINE TgBOOL V(F_CMP_LE)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
TgUINT32 uiIndex;
for (uiIndex = 0; uiIndex < DIM; ++uiIndex)
{
if (!(ptv0->m_aData[uiIndex] <= ptv1->m_aData[uiIndex]))
{
return (TgFALSE);
};
};
return (TgTRUE);
}
TgINLINE TgBOOL V(F_CMP_LT)( V(CPCU_TgVEC) ptv0, V(CPCU_TgVEC) ptv1 )
{
TgUINT32 uiIndex;
for (uiIndex = 0; uiIndex < DIM; ++uiIndex)
{
if (!(ptv0->m_aData[uiIndex] < ptv1->m_aData[uiIndex]))
{
return (TgFALSE);
};
};
return (TgTRUE);
}